import Vue from 'vue'

import 'normalize.css/normalize.css' // css初始化的样式文件

import ElementUI from 'element-ui' // 导入element-ui组件库
// 查找 包的路径  先找 .js文件
// 找不到会去node_module中查找
// 找到包后会优先找index.js
// 没有index.js会找package.json中main节点
import 'element-ui/lib/theme-chalk/index.css' // 导入element-ui的样式
import '@/styles/index.scss' // 导入全局的样式文件
import App from './App' // 导入app根组件
import store from './store' // 导入vuex仓库
import router from './router'// 导入vue-router 路由
import '@/icons/index.js' // icon图标
import '@/permission' // 权限控制
import i18n from '@/lang'
// import PageTools from '@/components/PageTools'
// Vue.component('PageTools', PageTools)
// 预期
import MyUi from '@/components'
import Print from 'vue-print-nb'
Vue.use(Print) // 注册完后会得到一个指令 v-print="{id: '容器的id'}"
Vue.use(MyUi)
// import '@/directives' // 直接导入并执行 注册所有指令
// ----------- 按需导入需要注册的指令 -----------------
/* import { imgerror, bgc } from '@/directives'
Vue.directive('imgerror', imgerror)
Vue.directive('bgc', bgc) */
// --------------------------------------
import * as allFilters from '@/filters' // 将filter/index.js中所有的按需导出的成员收集到一个对象中
console.log(allFilters)
Object.keys(allFilters).forEach(item => {
  Vue.filter(item, allFilters[item])
})
// 在按需导出的directives的基础上 批量注册所有指令
// import * as 别名 from  '路径' // 可以获取到路径文件中所有的按需导出的数据(会被包裹在一个对象中)
import * as allDirectives from '@/directives'
// console.log(allDirectives)
// for in 批量注册
/* for (const k in allDirectives) {
  console.log(k)
  Vue.directive(k, allDirectives[k])
} */
// console.log(Object.keys(allDirectives)) // ['agc', 'bgc', 'cgc', 'dgc', 'imgerror']
Object.keys(allDirectives).forEach(k => {
  Vue.directive(k, allDirectives[k])
})
// 配置ElementUI的中英切换逻辑
Vue.use(ElementUI, {
  i18n: (key, value) => i18n.t(key, value)
})
Vue.config.productionTip = false
new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
})
